#include "gather_task.h"
#include "GatherDataHandlerMemory.h"

TaskHandle_t gather_handler;

// 初始化心跳任务
/**
 * 心跳任务功能概述：
 * 1.提示灯闪烁--> 提示正在运行（每隔一段时间）
 * 2.每隔几秒钟向后台服务器报备状态 --> http/运行日志
 */
void gather_task_init()
{
    // 初始化温湿度采集器
    DHT11_Init();
    // 进行烟雾传感器ADC初始化
    ADCx_Init();
}

// 任务启动函数
void gather_task(void *param)
{
    // u8 tem, hul;
    // u16 value, data;
    while (1)
    {

        /* // 温湿度传感器进行数据采集
        DHT11_Read_Data(&tem, &hul);
        // 打印
        printf("tem = %d, hul = %d\r\n", tem, hul);

        // 烟雾传感器
        value=Get_ADC_Value(ADC_Channel_9,1);
        value=value/40;
        if(value>=100)value=100;
        printf("ADC:%d\r\n",value);

        // 雨滴传感器
        printf("value = %d\r\n", DATA_PIN_READ);

        // 光敏传感器
        data=Get_ADC_Value(ADC_Channel_8,1);
        data=100 - data/40;
        if(data>=100)data=100;      
        printf("DATA:%d\r\n",data); */

        // 声明采集数据结构体
        GatherData gatherData;

        // 温湿度传感器进行数据采集
        DHT11_Read_Data(&gatherData.temp, &gatherData.humi);

        // 烟雾传感器数据采集
        gatherData.somke = Get_ADC_Value(ADC_Channel_9,1) == 100;

        // 雨滴传感器数据采集
        gatherData.raidrop = DATA_PIN_READ;

        // 光敏传感器数据采集
        gatherData.sunshine = Get_ADC_Value(ADC_Channel_8,1) == 100; 

        // 数据处理
        dataHandler(&gatherData);

        vTaskDelay(1000);
    }
    
}

// 程序启动函数
void gather_task_create()
{
    // 创建任务
    BaseType_t res = xTaskCreate(gather_task, "gather_task", 128, NULL, 2, &gather_handler);
    if (res == pdPASS)
    {
        printf("gather_task create success!\r\n");
    }
}  